trait Pilot {
    fn fly(&self) {
        println!("This is your captain speaking.");
    }
}
trait Wizard {
    fn fly(&self) {
        println!("Up!");
    }
}
struct Human;
impl Pilot for Human {
    fn fly(&self) {
        println!("This is your captain speaking.");
    }
}
impl Wizard for Human {
    fn fly(&self) {
        println!("Up!");
    }
}
impl Human {
    fn fly(&self) {
        println!("*waving arms furiously*");
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test_trait_override() {
        let person = Human;
        Pilot::fly(&person); //根据trait 选择实现
        Wizard::fly(&person);
        person.fly();
    }
}